// packageC/pages/creatPost/creatPost.js
import { getUserInfo } from '../../../utils/userInfo';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        fileList: [], // 上传的图片列表
    },

    /**
     * 发布
     */
    submit() {
        console.log(this.data.imgUrl);
    },

    /** 
     * 选择图片并展示
     */
    afterRead(e) {
        // console.log(e.detail.file.url);
        const { file } = e.detail;
        const { fileList } = this.data;
        const newFileList = [...fileList];
        file.forEach(item => {
            newFileList.push({ url: item.url });
        });
        this.setData({
            fileList: [...newFileList]
        });
    },

    // 上传图片
    uploadToCloud(e) {
        // 获取用户的uid
        const { _id } = getUserInfo();
        const { content } = e.detail.value;
        const { fileList } = this.data;
        if (!fileList.length) {
            // 表单，将数据发布到数据库
            wx.cloud.callFunction({
                name: 'reqTalkAPI',
                data: {
                    scene: 'SAVE_TALK',
                    uid: _id,
                    content,
                    imgUrl: []
                }
            })
                .then(res => {
                    console.log(res);
                    Toast({
                        type: 'success',
                        message: '发布成功',
                        onClose: () => {
                            // 跳转页面
                            wx.reLaunch({
                                url: '../../../pages/discuss/discuss',
                            })
                        },
                    });
                })
        } else {
            // 随机整数 + 随机小数 + uid，防止图片重复
            const uploadTasks = fileList.map(file => this.uploadFilePromise(`${Math.ceil(Math.random() * 1000)}-${Math.random()}-${_id}.png`, file));
            Promise.all(uploadTasks)
                .then(data => {
                    const newFileList = data.map(item => ({ url: item.fileID }));
                    this.setData({ fileList: newFileList });
                    let imgUrl = [];
                    data.forEach(item => {
                        imgUrl.push(item.fileID);
                    });
                    // console.log(content, imgUrl);
                    // 表单，将数据发布到数据库
                    wx.cloud.callFunction({
                        name: 'reqTalkAPI',
                        data: {
                            scene: 'SAVE_TALK',
                            uid: _id,
                            content,
                            imgUrl
                        }
                    })
                        .then(res => {
                            console.log(res);
                            Toast({
                                type: 'success',
                                message: '发布成功',
                                onClose: () => {
                                    // 跳转页面
                                    wx.reLaunch({
                                        url: '../../../pages/discuss/discuss',
                                    })
                                },
                            });
                        })
                })
                .catch(e => {
                    Toast.fail('发布失败');
                    console.log(e);
                });
        }
    },

    // 上传到云函数
    uploadFilePromise(fileName, chooseResult) {
        // console.log(fileName, chooseResult);
        return wx.cloud.uploadFile({
            cloudPath: fileName,
            filePath: chooseResult.url
        });
    },

    // 根据图片的 fileID 拿到真实的图片地址，目的是为了传入数据库用
    // getTempFileURL(cloudPath) {
    //     const that = this;
    //     cloudPath.forEach(item => {
    //         wx.cloud.getTempFileURL({
    //             fileList: [{
    //                 fileID: item.fileID,
    //                 maxAge: 60 * 60, // one hour
    //             }]
    //         }).then(res => {
    //             // get temp file URL
    //             // console.log(res.fileList[0].tempFileURL)
    //             arr.push(res.fileList[0].tempFileURL)
    //             that.setData({
    //                 imgUrl: arr
    //             });
    //             console.log(arr);
    //         }).catch(error => {
    //             // handle error
    //         })
    //     })
    // },

    /**
     *  删除单个图片
     */
    delImg(e) {
        console.log('删除', e.detail.index);
        const { fileList } = this.data;
        const newFileList = [...fileList];
        newFileList.splice(e.detail.index, 1);
        this.setData({
            fileList: [...newFileList],
        });
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})